import { IParam } from '../../common';
import { ExpCtrlActionType } from '../../widgets';
import { IExpViewAbility } from '../ability';
import { IExpViewStore } from '../store';
import { IDEViewController } from './i-de-view-controller';

/**
 * 导航视图控制器接口
 *
 * @export
 * @interface IExpViewController
 * @extends {IDEViewController<S, A>}
 * @template S
 * @template A
 */
export interface IExpViewController<
	S extends IExpViewStore,
	A extends IExpViewAbility
> extends IDEViewController<S, A> {
	/**
	 * 处理导航部件行为
	 *
	 * @template T
	 * @param {(T | ExpCtrlActionType)} action
	 * @param {IParam[]} data
	 * @memberof IExpViewController
	 */
	handleExpCtrlAction<T>(action: T | ExpCtrlActionType, data: IParam[]): void;

	/**
	 * 处理快速分组值变化
	 *
	 * @param {IParam} item
	 * @memberof IExpViewController
	 */
	handleQuickGroupValueChange(item: IParam): void;
}
